ডিপেনডেন্সি টেস্টিং (Dependency Testing) টেস্টএনজি-এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা একটি টেস্টকে অন্য টেস্টের উপর নির্ভরশীল করতে দেয়। অর্থাৎ, একটি টেস্ট কেস সফলভাবে রান না হলে, তার উপর নির্ভরশীল টেস্ট কেসটি এক্সিকিউট হবে না। এটি কমপ্লেক্স টেস্ট সিকোয়েন্স ম্যানেজ করার জন্য বিশেষভাবে কার্যকর।
কেন ডিপেনডেন্সি টেস্টিং গুরুত্বপূর্ণ?
- জটিল টেস্ট কেস পরিচালনা: কোনো ফিচারের বিভিন্ন অংশ নির্ভরশীল হলে সেগুলোর টেস্ট ম্যানেজ করা সহজ হয়।
- অপ্রয়োজনীয় টেস্ট এড়ানো: যদি একটি নির্ভরশীল টেস্ট ব্যর্থ হয়, তাহলে পরবর্তী টেস্ট চালানো হবে না।
- সংগঠিত টেস্ট রুটিন: নির্দিষ্ট সিকোয়েন্সে টেস্ট চালানোর মাধ্যমে সময় এবং রিসোর্স বাঁচানো যায়।
TestNG-তে ডিপেনডেন্সি টেস্টিং কনফিগার করা
TestNG-তে dependsOnMethods বা dependsOnGroups অ্যাট্রিবিউট ব্যবহার করে ডিপেনডেন্সি নির্ধারণ করা যায়।
১. dependsOnMethods ব্যবহার করা
dependsOnMethods অ্যাট্রিবিউট ব্যবহার করে একটি টেস্ট অন্য টেস্ট মেথডের উপর নির্ভরশীল করা যায়।
কোড উদাহরণ:
import org.testng.annotations.Test;
public class DependencyExample {
@Test
public void loginTest() {
System.out.println("Login test executed");
}
@Test(dependsOnMethods = { "loginTest" })
public void dashboardTest() {
System.out.println("Dashboard test executed");
}
@Test(dependsOnMethods = { "dashboardTest" })
public void logoutTest() {
System.out.println("Logout test executed");
}
}
আউটপুট:
১. প্রথমে loginTest চলবে।
২. তারপর dashboardTest।
৩. সবশেষে logoutTest।
যদি loginTest ব্যর্থ হয়, তাহলে dashboardTest এবং logoutTest চলবে না।
২. dependsOnGroups ব্যবহার করা
dependsOnGroups অ্যাট্রিবিউট ব্যবহার করে একটি টেস্ট নির্দিষ্ট গ্রুপের উপর নির্ভরশীল করা যায়।
কোড উদাহরণ:
import org.testng.annotations.Test;
public class DependencyGroupExample {
@Test(groups = { "sanity" })
public void sanityTest1() {
System.out.println("Sanity Test 1 executed");
}
@Test(groups = { "sanity" })
public void sanityTest2() {
System.out.println("Sanity Test 2 executed");
}
@Test(dependsOnGroups = { "sanity" })
public void regressionTest() {
System.out.println("Regression Test executed");
}
}
আউটপুট:
১. sanityTest1 এবং sanityTest2 প্রথমে চলবে।
২. এর পরে regressionTest।
যদি sanity গ্রুপের কোনো টেস্ট ব্যর্থ হয়, তাহলে regressionTest চলবে না।
স্কিপ হওয়া টেস্ট চিহ্নিত করা
যদি কোনো ডিপেনডেন্সি টেস্ট ফেইল করে, তাহলে তার উপর নির্ভরশীল টেস্টগুলো Skipped হিসাবে চিহ্নিত হয়।
উদাহরণস্বরূপ, যদি loginTest ব্যর্থ হয়, তাহলে TestNG কনসোলে dashboardTest এবং logoutTest এর স্ট্যাটাস Skipped দেখাবে।
ডিপেনডেন্সি টেস্টিং এর জন্য অতিরিক্ত সেটিংস
১. AlwaysRun = true
যদি নির্ভরশীল টেস্ট ফেইল করলেও পরবর্তী টেস্ট চালানো হয়, তাহলে alwaysRun = true সেট করতে হয়।
কোড উদাহরণ:
@Test(dependsOnMethods = { "loginTest" }, alwaysRun = true)
public void profileTest() {
System.out.println("Profile Test executed even if loginTest fails");
}
২. Multiple Dependencies
একাধিক মেথড বা গ্রুপ নির্ভরশীল হলে তাদের তালিকা দিতে হয়।
কোড উদাহরণ:
@Test(dependsOnMethods = { "method1", "method2" })
public void combinedTest() {
System.out.println("Combined Test executed");
}
সারাংশ
TestNG-তে ডিপেনডেন্সি টেস্টিং একটি শক্তিশালী ফিচার, যা জটিল টেস্ট সিকোয়েন্স ম্যানেজ করতে সাহায্য করে। dependsOnMethods এবং dependsOnGroups এর মাধ্যমে টেস্ট নির্ভরশীলতা নির্ধারণ করে সহজেই বড় আকারের টেস্ট প্ল্যান তৈরি করা যায়। ডিপেনডেন্সি টেস্টিংয়ের সঠিক ব্যবহার টেস্ট প্রক্রিয়ার সময় ও রিসোর্স অপচয় রোধ করে এবং টেস্ট ফলাফলের উপর আরও নির্ভরযোগ্যতা নিশ্চিত করে।
Read more